package mypack;

import java.util.Random;

public class Global 
{
	final static int POPULATION_SIZE=100; // bir populasyonda kaç birey olacak
	final static int CHROMOSOME_LENGTH=100; //  problem için kaç şehir kullanılacak
	final static double CROSS_PROBABILITY=0.9;
	final static double MUTATION_PROBABILITY=0.4;
	final static double DEAD_END_PROBABILITY = 0.0; // aralara çıkmaz yollar koyma olasılığı
	//sonlanma için son kaç populasyon boyunca en iyi bireyin değişmediği
	final static int COMPARED_FITNESS_NUMBER=100;
	final static int MAX_ITERATION_NUMBER=5; // kaç tane job arka arkaya çalıştırılacak
	final static int HUGE_VAL = 100000; // çıkmaz yol değeri
	final static int MAX_DISTANCE = 10; // 40 + rand (MAX_DISTANCE)
	final static int DEFAULT_DISTANCE = 100;
	final static int NUMBER_OF_REPLACE =  4 * CHROMOSOME_LENGTH / 10; //parentlar arası kaç gen değişecek
	public static int evolutionStep = 0;
	//kaç ayrı populasyonun aynı anda çalışacağı
	public static int MAPREDUCE_NUMBER = 10;
	//yan yana olan şehirler hariç diğer tüm pathler en az 40'tan başlar 40 + rand(10)
	public static int DISTANCE_ADDITION = 40;
	final static int FITNESS_VAL_NEEDED = 36230; //Sonlanma için gereken en iyi birey bundan küçük olmalı
	// her iterasyon sonunda her populayondan 4 birey diğer tüm populasyonlara gönderirilir.
	final static int EXCHANGE_NUM = 1; 
	public static Genetic gen = new Genetic();
	//returns true or false with the given probability
	public static boolean flip(double probability)
	{
		if (probability == 1.0) 
		{
			return true;
		} 
		else 
		{
			Random generator = new Random();
			double val = generator.nextDouble();
			if (val <= probability) 
			{
				return true;
			}
			return false;	
		}
	}
}
